extern crate nix;

use log;
use std;
use thiserror::Error;

/// rustime errors.
#[derive(Debug, Error)]
pub enum Error {
    #[error("Invalid argument: {0}")]
    InvalidArgument(&'static str),

    #[error("set logger error: {0}")]
    SetLoggerError(#[from] log::SetLoggerError),

    #[error("nix error: {0}")]
    NixError(#[from] nix::Error),

    #[error("io error: {0}")]
    IOError(#[from] std::io::Error),

    #[error("json error: {0}")]
    JsonError(#[from] serde_json::error::Error),

    #[error("ffi error: {0}")]
    NulError(#[from] std::ffi::NulError),

    #[error("parse int error: {0}")]
    ParseIntError(#[from] std::num::ParseIntError),

    #[error("Unsupported feature: {0}")]
    Unsupported(String),
}
